home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 54200 / 54200.xpi / chrome / dogood.jar / content / DoGoodContextMenu.js < prev    next >
Text File  |  2010-01-05  |  7KB  |  230 lines

  1. /**
  2.  * Context menu handler
  3.  */
  4.  
  5. const DoGoodContextMenu =
  6. {
  7.     context_menu_showorigall : null,
  8.     context_menu_report : null,
  9.     context_menu_ignoreon : null,
  10.     context_menu_ignoreoff : null,
  11.     context_menu : null,
  12.     
  13.     toolbar_menu_showorigall : null,
  14.     toolbar_menu_ignoreon : null,
  15.     toolbar_menu_ignoreoff : null,
  16.  
  17.     /**
  18.      * Event handler to open the context menu
  19.      *
  20.      */
  21.     DoGoodContextOn : function() {
  22.         var doc = window.content.document;
  23.         
  24.         if (gContextMenu.onLink && gContextMenu.onImage && !DoGoodCookie.isIgnore(doc.location.href) && !gContextMenu.target.is_dogood && (gContextMenu.target.id != 'DoGoodObject')) {
  25.             DoGoodContextMenu.context_menu_report.setAttribute('hidden', false);
  26.         } else {
  27.             DoGoodContextMenu.context_menu_report.setAttribute('hidden', true);
  28.         }
  29.         
  30.         if (DoGoodReplace.isDogoodObject(doc)) {
  31.             DoGoodContextMenu.context_menu_showorigall.setAttribute('hidden', false);
  32.         } else {
  33.             DoGoodContextMenu.context_menu_showorigall.setAttribute('hidden', true);
  34.         }
  35.         
  36.         if (DoGoodMenuAction.isIgnoreOn(doc)){
  37.             DoGoodContextMenu.context_menu_ignoreoff.setAttribute('hidden', false);
  38.             DoGoodContextMenu.context_menu_ignoreon.setAttribute('hidden', true);
  39.         } else {
  40.             DoGoodContextMenu.context_menu_ignoreon.setAttribute('hidden', false);
  41.             DoGoodContextMenu.context_menu_ignoreoff.setAttribute('hidden', true);
  42.         }
  43.         
  44.         if (DoGoodFilter.RegExpWhiteList(doc.location.href)){
  45.             DoGoodContextMenu.context_menu_ignoreoff.setAttribute('hidden', true);
  46.             DoGoodContextMenu.context_menu_ignoreon.setAttribute('hidden', true);
  47.         }
  48.     },
  49.  
  50.     /**
  51.      * Event handler to open the toolbar menu
  52.      *
  53.      */
  54.     DoGoodToolbarAction : function() {
  55.         var doc = window.content.document;
  56.         
  57.         if (DoGoodReplace.isDogoodObject(doc)) {
  58.               DoGoodContextMenu.toolbar_menu_showorigall.setAttribute('disabled', "false");
  59.         } else {
  60.             DoGoodContextMenu.toolbar_menu_showorigall.setAttribute('disabled', "true");
  61.         }
  62.         
  63.         if (DoGoodMenuAction.isIgnoreOn(doc)){
  64.             DoGoodContextMenu.toolbar_menu_ignoreoff.setAttribute('disabled', "false");
  65.             DoGoodContextMenu.toolbar_menu_ignoreon.setAttribute('disabled', "true");
  66.         } else {
  67.             DoGoodContextMenu.toolbar_menu_ignoreoff.setAttribute('disabled', "true");
  68.             DoGoodContextMenu.toolbar_menu_ignoreon.setAttribute('disabled', "false");
  69.         }
  70.         
  71.         if (DoGoodFilter.RegExpWhiteList(doc.location.href)){
  72.             DoGoodContextMenu.toolbar_menu_ignoreoff.setAttribute('disabled', "true");
  73.             DoGoodContextMenu.toolbar_menu_ignoreon.setAttribute('disabled', "true");
  74.         }
  75.     }
  76. };
  77.  
  78. /**
  79.  * Context menu action
  80.  */
  81. const DoGoodMenuAction = {
  82.     
  83.     ShowOriginalAll : function() {
  84.  
  85.         DoGoodCookie.createCookie('DoGoodShowAll','yes', 1/86400*8);
  86.         DoGoodMenuAction.ShowOriginalObjects();
  87.         
  88.     },
  89.  
  90.     /**
  91.      * Function for remove all dogood ads and show original ads
  92.      *
  93.      * @param {object} event - event object
  94.      */
  95.     ShowOriginalObjects : function(doc) {
  96.         if (!doc) var doc = window.content.document;
  97.         var iframes = doc.getElementsByTagName("iframe");
  98.         for (var k=0;k<iframes.length;k++) {
  99.             DoGoodMenuAction.ShowOriginalCollection(iframes[k].contentWindow.document.getElementsByTagName("img"), true);
  100.             DoGoodMenuAction.ShowOriginalCollection(iframes[k].contentWindow.document.getElementsByTagName("object"), false);
  101.             DoGoodMenuAction.ShowOriginalObjects(iframes[k].contentWindow.document);
  102.         }
  103.         
  104.         DoGoodMenuAction.ShowOriginalCollection(doc.getElementsByTagName("img"), true);
  105.         DoGoodMenuAction.ShowOriginalCollection(doc.getElementsByTagName("object"), false);
  106.     },
  107.  
  108.     /**
  109.      * Function replace all dogood ad on original ad for collection objects
  110.      *
  111.      * @param {objects collection} objs - DOM objects collection
  112.      * @param {boolean} isParent - for detect parent is replace
  113.      */
  114.     ShowOriginalCollection : function(objs, isParent) {
  115.         var i = 0;
  116.         var len = objs.length;
  117.         while (i < len) {
  118.             if (objs[i].getAttribute('id') == 'DoGoodObject') {
  119.                 if (isParent) {
  120.                     DoGoodMenuAction.ShowOriginal(objs[i].parentNode);
  121.                 } else {
  122.                     DoGoodMenuAction.ShowOriginal(objs[i]);
  123.                 }
  124.                 DoGoodReplace.currentCount--;
  125.                 document.getElementById('status-count').value = DoGoodReplace.currentCount;   //set to bottom right pannel current count
  126.             }
  127.             if (objs.length == len)    { i++; } else { len = objs.length };
  128.         }
  129.     },
  130.     
  131.     /**
  132.      * Function replace one dogood ad on original ad
  133.      *
  134.      * @param {object} obj - DOM object
  135.      */
  136.     ShowOriginal : function(obj) {
  137.             var pr = obj.parentNode;
  138.             pr.appendChild(obj.backsrc);
  139.             pr.insertBefore(obj.backsrc, obj);
  140.             pr.removeChild(obj);
  141.     },
  142.     
  143.     /**
  144.      * Function for send user report found on the banner
  145.      *
  146.      * @param {object} event - event object
  147.      */
  148.     AdReport : function(event) {
  149.         var target = gContextMenu.target;
  150.         var page_url = window.content.document.location.href;
  151.         var size, click_url, type, src; 
  152.         if (target.tagName == 'IMG') {
  153.             size = target.width + 'x' + target.height;
  154.             type = 'image';
  155.             src = target.src;
  156.             click_url = target.parentNode.href;
  157.             target.is_dogood = 1;
  158.         }
  159.  
  160.         params = 'page_url=' + page_url + '&click_url=' + click_url + '&size=' + size + '&type=' + type + '&src=' + src;
  161.         var xmlhttp = DoGoodFilter.getXmlHttp();
  162.         xmlhttp.open("POST", DoGoodReplace.adsserver+'server/userads', true);
  163.         xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  164.         xmlhttp.onreadystatechange = function() {
  165.             if (xmlhttp.readyState == 4) {
  166.                    if (xmlhttp.status == 200) {
  167.                        var responseTx = xmlhttp.responseText;
  168.                        var w = window.open("chrome://dogood/content/dgmessage.xul", "ThanksGood", "chrome,centerscreen,width=390,height=390, resizeble=false");
  169.                  }
  170.             }
  171.         };
  172.         xmlhttp.send(params);
  173.     },
  174.     
  175.     /**
  176.      * Save site for ignor
  177.      *
  178.      * @param {object} event - event object
  179.      */
  180.     IgnoreOn : function(event) {
  181.         DoGoodCookie.createCookie("dogoodIgnore", 1, 365);
  182.         DoGoodMenuAction.ShowOriginalAll(event);
  183.     },
  184.  
  185.     /**
  186.      * Off ignore for site
  187.      *
  188.      * @param {object} event - event object
  189.      */
  190.     IgnoreOff : function() {
  191.         DoGoodCookie.createCookie("dogoodIgnore", 0, 365);
  192.     },
  193.     
  194.     /**
  195.      * Send users feedback
  196.      */
  197.     Feedback : function() {
  198.         var daReferrer = document.referrer;
  199.         var email = "goodcause@dogoodhq.com";
  200.         var errorMsg = "Error message.";
  201.         var subject = "I think this is a very good cause to support.";
  202.         var body_message = "";
  203.         
  204.         var mailto_link = 'mailto:'+email+'?subject='+subject+'&body='+body_message;
  205.         
  206.         win = window.open(mailto_link,'emailWindow');
  207.         if (win && win.open &&!win.closed) win.close();
  208.     },
  209.  
  210.     /**
  211.      * Send users good idea
  212.      */
  213.     GoodIdea : function() {
  214.         var daReferrer = document.referrer;
  215.         var email = "goodidea@dogoodhq.com";
  216.         var errorMsg = "Error message.";
  217.         var subject = "I have a really good idea to share with everyone.";
  218.         var body_message = "";
  219.         
  220.         var mailto_link = 'mailto:'+email+'?subject='+subject+'&body='+body_message;
  221.         
  222.         win = window.open(mailto_link,'emailWindow');
  223.         if (win && win.open &&!win.closed) win.close();
  224.     },
  225.     
  226.     isIgnoreOn : function(doc) {
  227.         if (DoGoodCookie.readCookie('dogoodIgnore', doc) == 1) return true;
  228.     }
  229.  
  230. };